【精选】NETCore入门系列(自定义IHtmlHelper、TagHelper、PartialView和ViewComponent) | 您所在的位置:网站首页 › razor html 标签 › 【精选】NETCore入门系列(自定义IHtmlHelper、TagHelper、PartialView和ViewComponent) |
文章目录
一、创建ASP.NET Core Web 项目二、自定义IHtmlHelper三、自定义TagHelper四、局部视图(PartialView)的使用五、视图组件(ViewComponent)的使用六、源码
一、创建ASP.NET Core Web 项目
1、创建一个ASP.NETCore Web应用(模型-视图-控制器),并将其命名为RazorWebApp。 (2)在startup.cs中添加该组件到管道中,代码如下: services.AddRazorPages().AddRazorRuntimeCompilation(); 二、自定义IHtmlHelper1、如下图,分别创建Utils和RazorExtension文件夹,并在该文件夹中创建一个名为HtmlHelperExtensions类。 3、将项目中默认的Index.cshtml内容做如下更改 @{ ViewData["Title"] = "Home Page"; } Welcome Learn about building Web apps with ASP.NET Core. IHtmlHelper @Html.Br() @Html.Img("你的图片所在路径")4、运行项目,F12可看到当前html中有3个br标签和一个img标签输出,其中img中图片是在百度找的。 1、在RazorExtension目录中创建一个名为StudentTagHelper类。 2、该类代码如下: //1、标记当前tag元素的名称,如果不标记,则默认使用当前去掉“TagHelper”的类名 [HtmlTargetElement("student")] public class StudentTagHelper:TagHelper { //2、定义一个Age字段,前端使用该标签时可给该属性传值 public int Age { get; set; } //3、重写Process public override void Process(TagHelperContext context, TagHelperOutput output) { // base.Process(context, output); output.TagName = "div";//对应的html标签 output.Attributes.Add("id","007");//标签中的属性 output.Attributes.Add("name","007"); output.Attributes.Add("age",Age); output.PreContent.SetContent("扩展TagHelper输出的内容!");//当前标签的内容 } }3、在Index,cshtml中添加如下代码,此时会发现页面上并没有输出一个"扩展TagHelper输出的内容!"的div标签,原因是未在_ViewImports.cshtml中引入自定义TagHelper的命名空间。 TagHelper4、找到_ViewImports.cshtml,并在其中添加"@addTagHelper *, RazorWebApp"代码,这段代码的意思是引入当前项目RazorWebApp中所有自定义的taghelper,完整代码如下: @using RazorWebApp @using RazorWebApp.Models @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @addTagHelper *, RazorWebApp5、重新启动项目,可看到自定义的TagHelper可正常输出内容。 1、在Views/Home目录下创建一个名为PartialView.cshtml视图文件,并向其中添加如下代码: 这是局部视图 局部视图的内容2、在Index.cshtml中添加如下代码,引入上一步中创建的视图文件。 @await Html.PartialAsync("PartialView")3、运行项目,可看到界面中输出PartialView.cshtml的内容,如下图: 1、在Utils目录下创建一个名为ViewComponentExtension的目录,并在其中创建一个名为StudentViewComponent类。 3、在Views/Shared目录中创建Components/StudentList目录,并在该目录中创建一个名为Default.cshtml视图文件(这是视图组件默认"return view()"指向的视图文件地址) 4、Default.cshtml视图文件的代码如下: @using RazorWebApp.Utils.ViewComponentExtension; @model List CurUser:@ViewBag.UserName @foreach (var item in Model) { 用户[email protected]:@item.Name }5、在Index.cshtml中添加如下代码(引用自定义的视图组件): @await Component.InvokeAsync("StudentList")6、运行项目,可看到浏览器中正确输出如下内容: https://gitee.com/wusuoweixgy/NET5Code/tree/master/RazorWebApp |
CopyRight 2018-2019 实验室设备网 版权所有 |